package com.ecommerce.user.repository;

import com.ecommerce.user.entity.UserProfile;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

/**
 * 用户详情数据访问接口
 * 提供用户详情信息的持久化操作
 */
@Repository
public interface UserProfileRepository extends JpaRepository<UserProfile, Long> {

    /**
     * 根据用户ID查询用户详情
     *
     * @param userId 用户ID
     * @return 用户详情
     */
    Optional<UserProfile> findByUserId(Long userId);

    /**
     * 根据真实姓名模糊查询用户详情
     *
     * @param realName 真实姓名
     * @return 用户详情列表
     */
    List<UserProfile> findByRealNameContaining(String realName);

    /**
     * 根据身份证号查询用户详情
     *
     * @param idCard 身份证号
     * @return 用户详情
     */
    Optional<UserProfile> findByIdCard(String idCard);

    /**
     * 根据地址模糊查询用户详情
     *
     * @param address 地址
     * @return 用户详情列表
     */
    List<UserProfile> findByAddressContaining(String address);

    /**
     * 根据职业查询用户详情
     *
     * @param occupation 职业
     * @return 用户详情列表
     */
    List<UserProfile> findByOccupation(String occupation);

    /**
     * 根据兴趣标签查询用户详情（JSON格式匹配）
     *
     * @param interest 兴趣标签
     * @return 用户详情列表
     */
    @Query("SELECT up FROM UserProfile up WHERE up.interests LIKE %:interest%")
    List<UserProfile> findByInterestsContaining(@Param("interest") String interest);

    /**
     * 检查用户ID是否存在
     *
     * @param userId 用户ID
     * @return 是否存在
     */
    boolean existsByUserId(Long userId);

    /**
     * 检查身份证号是否存在
     *
     * @param idCard 身份证号
     * @return 是否存在
     */
    boolean existsByIdCard(String idCard);
}